package com.lagou.task20;

import java.lang.reflect.Constructor;
import java.lang.reflect.Field;

public class PersonFieldTest {
    public static void main(String[] args) throws Exception {
         //1使用反射机制构造对象并获取成员变量并打印
//        1.1获取Class对象
        Class aClass = Class.forName("com.lagou.task20.Person");
//        1.2根据Class对象获取对应的构造方法
        Constructor constructor = aClass.getConstructor(String.class, int.class);
//        1.3使用有参数构造方法来得到Peron类型的对象
        Object liyulin = constructor.newInstance("liyulin", 44);

//        1.4根据成员变量获取对应的成员变量信息
        Field field =  aClass.getDeclaredField("name");
        Field[] fields =  aClass.getDeclaredFields();
        for (Field f1:
                fields) {
            System.out.println("获取到的访问修饰符 "+f1.getModifiers());
            System.out.println("获取到的成员变量名 "+f1.getName());
            System.out.println("获取到的成员变量type "+f1.getType());
        }
        //设置Java语言的访问权限检查
        field.setAccessible(true);
//        1。5使用Person类型的对象来获取成员变量的数值打印
        System.out.println(field.get(liyulin));

        //1.5修改指定对象成员变量的值
        field.set(liyulin,"zhangfei");
        System.out.println(field.get(liyulin));



    }

}
